package com.alignet.gn.hibernate.dao;

import java.util.List;

import org.hibernate.LockMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.alignet.gn.hibernate.TgnConfigpassword;

/**
 * A data access object (DAO) providing persistence and search support for
 * TgnConfigpassword entities. Transaction control of the save(), update() and
 * delete() operations can directly support Spring container-managed
 * transactions or they can be augmented to handle user-managed Spring
 * transactions. Each of these methods provides additional information for how
 * to configure it for the desired type of transaction control.
 *
 * @see com.alignet.gn.hibernate.TgnConfigpassword
 * @author MyEclipse Persistence Tools
 */

public class TgnConfigpasswordDAO extends HibernateDaoSupport {
    private static final Logger log = LoggerFactory
	    .getLogger(TgnConfigpasswordDAO.class);

    protected void initDao() {
	// do nothing
    }

    public void save(TgnConfigpassword transientInstance) {
	log.debug("saving TgnConfigpassword instance");
	try {
	    getHibernateTemplate().save(transientInstance);
	    log.debug("save successful");
	} catch (RuntimeException re) {
	    log.error("save failed", re);
	    throw re;
	}
    }

    public void delete(TgnConfigpassword persistentInstance) {
	log.debug("deleting TgnConfigpassword instance");
	try {
	    getHibernateTemplate().delete(persistentInstance);
	    log.debug("delete successful");
	} catch (RuntimeException re) {
	    log.error("delete failed", re);
	    throw re;
	}
    }

    public TgnConfigpassword findById(java.lang.Integer id) {
	System.out.println("getting TgnConfigpassword instance with id: " + id+" DEFAULT " );
	try {
	    TgnConfigpassword instance = (TgnConfigpassword) getHibernateTemplate().get("com.alignet.gn.hibernate.TgnConfigpassword", id);
	    return instance;
	} catch (RuntimeException re) {
	    log.error("get failed", re);
	    throw re;
	}
    }

    public List<TgnConfigpassword> findByExample(TgnConfigpassword instance) {
	log.debug("finding TgnConfigpassword instance by example");
	try {
	    List<TgnConfigpassword> results = (List<TgnConfigpassword>) getHibernateTemplate()
		    .findByExample(instance);
	    log.debug("find by example successful, result size: "
		    + results.size());
	    return results;
	} catch (RuntimeException re) {
	    log.error("find by example failed", re);
	    throw re;
	}
    }

    public List findByProperty(String propertyName, Object value) {
	log.debug("finding TgnConfigpassword instance with property: "
		+ propertyName + ", value: " + value);
	try {
	    String queryString = "from TgnConfigpassword as model where model."
		    + propertyName + "= ?";
	    return getHibernateTemplate().find(queryString, value);
	} catch (RuntimeException re) {
	    log.error("find by property name failed", re);
	    throw re;
	}
    }

    public List findAll() {
	log.debug("finding all TgnConfigpassword instances");
	try {
	    String queryString = "from TgnConfigpassword";
	    return getHibernateTemplate().find(queryString);
	} catch (RuntimeException re) {
	    log.error("find all failed", re);
	    throw re;
	}
    }

    public TgnConfigpassword merge(TgnConfigpassword detachedInstance) {
	log.debug("merging TgnConfigpassword instance");
	try {
	    TgnConfigpassword result = (TgnConfigpassword) getHibernateTemplate()
		    .merge(detachedInstance);
	    log.debug("merge successful");
	    return result;
	} catch (RuntimeException re) {
	    log.error("merge failed", re);
	    throw re;
	}
    }

    public void attachDirty(TgnConfigpassword instance) {
	log.debug("attaching dirty TgnConfigpassword instance");
	try {
	    getHibernateTemplate().saveOrUpdate(instance);
	    log.debug("attach successful");
	} catch (RuntimeException re) {
	    log.error("attach failed", re);
	    throw re;
	}
    }

    public void attachClean(TgnConfigpassword instance) {
	log.debug("attaching clean TgnConfigpassword instance");
	try {
	    getHibernateTemplate().lock(instance, LockMode.NONE);
	    log.debug("attach successful");
	} catch (RuntimeException re) {
	    log.error("attach failed", re);
	    throw re;
	}
    }

    public static TgnConfigpasswordDAO getFromApplicationContext(
	    ApplicationContext ctx) {
	return (TgnConfigpasswordDAO) ctx.getBean("TgnConfigpasswordDAO");
    }
}